package com.demon.androidbasic.action

import android.content.Context
import android.content.res.Resources
import android.graphics.drawable.Drawable
import androidx.annotation.ColorInt
import androidx.annotation.ColorRes
import androidx.annotation.DrawableRes
import androidx.annotation.StringRes
import androidx.core.content.ContextCompat

/**
 * author : Android 轮子哥
 * github : https://github.com/getActivity/AndroidProject
 * time   : 2019/09/15
 * desc   : Context 意图处理（扩展非 Context 类的方法，禁止 Context 类实现此接口）
 */
interface ResourcesAction {
    /**
     * 获取 Context
     */
    val myContext: Context

    /**
     * 获取资源对象（仅供子类调用）
     */
    val resources: Resources
        get() = myContext.resources

    /**
     * 根据 id 获取一个文本
     */
    fun getString(@StringRes id: Int): String {
        return myContext.getString(id)
    }

    fun getString(@StringRes id: Int, vararg formatArgs: Any): String {
        return resources.getString(id, *formatArgs)
    }

    /**
     * 根据 id 获取一个 Drawable
     */
    fun getDrawable(@DrawableRes id: Int): Drawable? {
        return ContextCompat.getDrawable(myContext, id)
    }

    /**
     * 根据 id 获取一个颜色
     */
    @ColorInt
    fun getColor(@ColorRes id: Int): Int {
        return ContextCompat.getColor(myContext, id)
    }

    /**
     * 获取系统服务
     */
    fun <S> getSystemService(serviceClass: Class<S>): S? {
        return ContextCompat.getSystemService(myContext, serviceClass)
    }
}